// 引入所需模块：http（创建服务器）、fs（文件操作）、path（路径处理）
const http = require('http');
const fs = require('fs');
const path = require('path');

// 1. 确定要读取的文件名（处理命令行参数）
// process.argv 是命令行参数数组：[node路径, 当前文件路径, 传入的参数]
const targetFileName = process.argv[2] || __filename; 
// __filename 是 Node.js 内置变量，指向当前文件路径（默认读取自身）

// 修复路径拼接问题：如果是绝对路径则直接使用，否则拼接当前目录
const targetPath = path.isAbsolute(targetFileName) 
    ? targetFileName 
    : path.join(__dirname, targetFileName);

// 2. 创建 HTTP 服务器
const server = http.createServer((req, res) => {
  // 仅处理根路径（localhost:8081）的请求
  if (req.url !== '/') {
    res.writeHead(404);
    res.end('仅支持访问根路径（localhost:8081）');
    return;
  }

  // 3. 用 fs.readFile 异步读取文件
  fs.readFile(targetPath, 'utf8', (err, data) => {
    if (err) {
      // 错误处理：文件不存在或读取失败
      res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
      res.end(`错误：文件不存在或读取失败\n原因：${err.message}\n路径：${targetPath}`);
      console.error('读取错误：', err.message); // 终端打印错误日志
      return;
    }
    // 读取成功：响应文件内容
    res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end(`文件内容如下（读取路径：${targetPath}）：\n\n${data}`);
  });
});

// 4. 启动服务器，监听 8081 端口
server.listen(8081, () => {
  console.log(`服务器已启动：http://localhost:8081`);
  console.log(`当前读取目标：${targetPath}`);
});
    